/* =============================================================================
PROJET           : c-social-network
NOM DU FICHIER   : main.c
OBJET            : procedure de lancement
--------------------------------------------------------------------------------
DATE DE CREATION : 19/05/10
AUTEUR           : Benjamin MICHEL
--------------------------------------------------------------------------------
MODIFICATIONS (   n) date - auteur - description )
    1) 19/05/10 - Benjamin MICHEL - création de la fonction main
    2) 20/05/10 - Benjamin MICHEL - chargement du fichier
    3) 20/05/10 - Benjamin MICHEL - résolution des questions
============================================================================= */

/*
Usage:
<nomprog> <fichier_entree> <fichier_sortie>

*/

#include <stdio.h>
#include "controller/controler.h"


int main(int argc, char *argv[]){
	/*==================================================
	Initialisations
	====================================================*/
	void *graph = NULL;/*graph*/
	void *graph_dual = NULL;/*graph dual*/
	void *fichier_entré = NULL;/*le fichier d'entrée*/
	void *fichier_sortie = NULL;/*le fichier de sortie*/
	void *rep_questions = NULL;/*les réponses aux questions*/

	/*==================================================
	Exécution
	====================================================*/
	/*Message d'accueil*/
	printf("\n=====C-Social-Network=====\n");

    /*verifie qu'on a exactement 2 arguments*/
    if(argc != 3){
    	/*affiche message d'erreur*/
        printf("\nUsage: %s <fichier_entrée> <fichier_sortie>\n", argv[0]);
        /*fin de prog*/
    	return -1;
    }

    /*====
    Chargement du fichier, dans graph et graph_dual
    ====*/
    /*Message d'information*/
    printf("\n\tChargement des données \"%s\" ...", argv[1]);
    /*Ouverture du fichier d'entrée*/
    fichier_entre = f_entre.openf(argv[1]);
    /*Charge dans graph et dans graph_dual*/
    f_controler.load_input(fichier_entre, graph, graph_dual);
    /*chargement réussis*/
    printf("\n\tChargement réussis!\n");


    /*====
    Chargement des questions, et execution
    ====*/
    /*Message d'information*/
    printf("\n\tChargement des questions de \"%s\" ...", argv[1]);
    /*charge les questions dans un pointeur universel*/
    rep_questions = read_exec_question(fichier_entré, graph);
    /*fermer le fichier d'entrée*/
	f_entree.closef(fichier_entre);
    /*chargement réussis*/
    printf("\n\tChargement réussis!\n");


    /*====
    Enregistrement des cfc, et des reponses dans le fichier sortie
    ====*/
    /*Message d'information*/
    printf("\n\tEnregistrement des CFC, et des reponses dans \"%s\" ...", argv[2]);
    /*Ouverture du fichier de sortie*/
    fichier_sortie = f_sortie.openf(argv[2]);
    /*Charge dans graph et dans graph_dual*/
    f_controler.(fichier_entre, graph, graph_dual);
    /*chargement réussis*/
    printf("\n\tEnregistrement réussis!\n");

    /*====
    Nettoyage et suppression des variables
    ====*/
    /*message d'information*/
    printf("\n\tNettoyage en cours ...");
    /*nettoyage du graph*/
    f_graph.destroy(graph);
    /*nettoyage du graph dual*/
    f_graph.destroy(graph_dual);
	/*fermer le fichier de sortie*/
	f_entree.closef(fichier_sortie);
    printf("\n\tNettoyage terminé!\n");

    /*saut de ligne final*/
    printf("\n");
    /*fin du prog*/
    return 0;
}
